#ifndef GAMEKIT_WINDOWS_H
#define GAMEKIT_WINDOWS_H

#include <string>

#include "gamekit/gamekit.h"
#include "gamekit/common/EventSource.h"

namespace gamekit
{
	enum WindowEvents
	{
		weQuit
	};

	class GK_API Window : public EventSource<Window, WindowEvents>
	{
		friend class Game;
	public:
		Window(const std::string& caption, const ushort& width, const ushort& height, const uint& depth);
		virtual ~Window();

		ushort width(void) const;
		ushort height(void) const;
		std::string caption(void) const;
		uint depth(void) const;

	protected:
		void virtual onInit(void) = 0;
		void virtual onBeginDraw(void) = 0;
		void virtual onEndDraw(void) = 0;

	private:
		void init(void);
		void beginDraw(void);
		void endDraw(void);

	private:
		std::string m_caption;
		ushort m_width;
		ushort m_height;
		uint m_depth;
	};
}

#endif